﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using SIPDTO;

namespace SIP
{
    public partial class Diocesis : System.Web.UI.Page
    {

        #region ** Declaración de variables

        private string _valparametro = "Parametro Diocesis";
        SIPBLL.SIPBLL _bll = new SIPBLL.SIPBLL();
        dtoDiocesis _dtodiocesis = new dtoDiocesis();
        dtoError _resp = new dtoError();
        dtoParametros _dtoparametro = new dtoParametros();
        List<dtoParametros> _dtparametro = new List<dtoParametros>();
        List<dtoDiocesis> _dtdiocesis = new List<dtoDiocesis>();

        #endregion

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
               if (Convert.ToBoolean(Session["Crear"]) == true)
                {
                    // método para obtener de una tabla el consecutivo de diocesis.
                    lblcodigo.Text = Convert.ToString(ObtenerParametro());
                    CleanControl(this.Controls);

                }
                else
                {
                    BuscarDiocesis();
                }
            }
        }

        protected void Registrar(object sender, EventArgs e)
        {
            try
            {
                if (Page.IsValid == true)
                {
                    if (Convert.ToBoolean(Session["Crear"]) == true)
                    {
                        _dtodiocesis.Identificacion = Convert.ToInt16(lblcodigo.Text);
                        _dtodiocesis.Descripcion = this.txtNombre.Text;
                        if (chkactivo.Checked == true)
                        {
                            _dtodiocesis.Estado = true;
                        }
                        else
                        {
                            _dtodiocesis.Estado = false;
                        }
                        // se crea la diocesis en la tabla Diocesis
                        _resp = _bll.AceptarDiocesis(_dtodiocesis,1);
                        CleanControl(this.Controls);
                        if (_resp.IdError == 100)
                        {
                            WebMsgBox.Show(_resp.Mensaje);
                            ActualizaParametro();// Se actualiza el parametro del consecutivo de la parroquia
                            lblcodigo.Text = Convert.ToString(ObtenerParametro());
                        }
                        else
                        {
                            WebMsgBox.Show(_resp.Mensaje);
                        }
                    }
                    else 
                    {
                        _dtodiocesis.Identificacion = Convert.ToInt16(Session["idDiocesis"]);
                        _dtodiocesis.Descripcion = this.txtNombre.Text;
                        if (chkactivo.Checked == true)
                        {
                            _dtodiocesis.Estado = true;
                        }
                        else
                        {
                            _dtodiocesis.Estado = false;
                        }
                        // se actualiza la diocesis 
                        _resp = _bll.AceptarDiocesis(_dtodiocesis,2);

                        if (_resp.IdError == 100)
                        {
                            WebMsgBox.Show(_resp.Mensaje);
                            Response.Redirect("ListadoDiocesis.aspx");
                        }
                        else
                        {
                            WebMsgBox.Show(_resp.Mensaje);
                        }
                    }
                   
                }
            }
            catch (Exception ex)
            {
                _resp.IdError = -100;
                _resp.Mensaje = ex.Message.ToString();
                WebMsgBox.Show(_resp.Mensaje);
            }

        }

        protected void Cancelar(object sender, EventArgs e)
        {
            Response.Redirect("ListadoDiocesis.aspx"); // Retorna al listado de diocesis

        }

        private void BuscarDiocesis() //Obtiene la información de la diocesis y lo carga en pantalla
        {
            _dtodiocesis.Identificacion = Convert.ToInt16(Session["idDiocesis"]);
           _dtdiocesis = _bll.ObtenerDiocesis(_dtodiocesis);
            lblcodigo.Text = Convert.ToString(_dtdiocesis[0].Identificacion);
            txtNombre.Text = _dtdiocesis[0].Descripcion;
            if (Convert.ToBoolean(_dtdiocesis[0].Estado) == true)
            {
                chkactivo.Checked = true;
            }
            else
            {
                chkactivo.Checked = false;
            }

        }
        #region ** Consecutivo Diócesis

        public int ObtenerParametro()
        {

            _dtparametro = _bll.ObtenerParametro(_valparametro);
            if (Convert.ToInt32(_dtparametro[0].Valor) == 0) //valida si el parametro es 0 y lo inicializa a 1
            { _dtodiocesis.Identificacion = Convert.ToInt32(_dtparametro[0].Valor) + 1; }
            else
            {
                _dtodiocesis.Identificacion = Convert.ToInt32(_dtparametro[0].Valor)+ 1;
            }
            return _dtodiocesis.Identificacion;

        }

        public void ActualizaParametro()
        {
            //Actualizar la tabla Parametro
            _dtparametro = _bll.ObtenerParametro(_valparametro);
            _dtoparametro.IdParametro = _dtparametro[0].IdParametro;
            _dtoparametro.Descripcion = _dtparametro[0].Descripcion;
            _dtoparametro.Valor = _dtparametro[0].Valor + 1;
            _resp = _bll.RegistrarParametro(_dtoparametro,2);
        }

        #endregion

        #region ** Validaciones

        public void CleanControl(ControlCollection controles)
        {
            foreach (Control control in controles)
            {
                if (control is TextBox)
                    ((TextBox)control).Text = string.Empty;
                else if (control is DropDownList)
                    ((DropDownList)control).ClearSelection();
                else if (control is RadioButtonList)
                    ((RadioButtonList)control).ClearSelection();
                else if (control is CheckBoxList)
                    ((CheckBoxList)control).ClearSelection();
                else if (control is RadioButton)
                    ((RadioButton)control).Checked = false;
                else if (control is CheckBox)
                    ((CheckBox)control).Checked = false;
                else if (control.HasControls())   //Esta linea detécta un Control que contenga otros Controles                    
                    //Así ningún control se quedará sin ser limpiado.                   
                    CleanControl(control.Controls);
            }
        }

        #endregion

    }
}